package cn.learn.io.bio.one;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * BIO服务器端演示
 * io的接收，用main主线程接收
 *
 * @author huangyezhan
 * @version 1.0
 * @date 2021年07月17日10:05
 */
public class Server {

    /**
     * 这是服务端
     * 目标：客户端发送消息，服务端接收消息。
     */
    public static void main(String[] args) {

        try {
            System.out.println("==服务端启动===");
            // 1、定义一个ServerSocket对象进行服务端的端口注册
            ServerSocket ss = new ServerSocket(9999);
            // 2、监听客户端的Socket链接请求
            Socket socket = ss.accept();
            // 3、从socket管道中得到一个字节输入流对象
            InputStream is = socket.getInputStream();
            // 4、把字节输入流包装成一个缓冲字符输入流
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            String         msg;
            if ((msg = br.readLine()) != null) {
                System.out.println("服务端接收到：" + msg);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

/**
 * 客户端
 */
class Client {

    public static void main(String[] args) throws IOException {
        // 1、创建Socket对象请求服务端的链接
        Socket socket = new Socket("127.0.0.1", 9999);
        // 2、从Socket对象中获取一个字节输出流
        OutputStream os = socket.getOutputStream();
        // 3、把字节输出流包装成一个打印流
        PrintStream ps = new PrintStream(os);
        ps.print("hello World!服务端。您好");
        ps.flush();
        //ps.close();

    }

}
